package cn.edu.pzhu.javaweb.dao;

/**
 * 持久层公共接口，定义单条数据的CRUD基础操作规范
 *
 * @param <T> 实体类类型
 * @param <ID> 主键数据类型（如Integer、Long、String等）
 */
public interface BaseDao<T, ID> {

    /**
     * 增加单条数据
     *
     * @param entity 要新增的实体对象（包含待保存的业务数据）
     * @return 新增成功返回true，失败返回false
     */
    boolean insert(T entity);

    /**
     * 根据主键删除单条数据
     *
     * @param id 要删除数据的主键
     * @return 删除成功返回true（删除行数≥1），失败返回false（删除行数=0）
     */
    boolean deleteById(ID id);

    /**
     * 修改单条数据（根据主键更新）
     *
     * @param entity 包含更新后数据的实体对象（必须包含有效主键）
     * @return 修改成功返回true（更新行数≥1），失败返回false（更新行数=0或主键无效）
     */
    boolean update(T entity);

    /**
     * 根据主键查询单条数据
     *
     * @param id 要查询数据的主键
     * @return 查到的数据对应的实体对象；若不存在则返回null
     */
    T selectById(ID id);
}
